#include "../include/head.h"
#include "../include/student.h"

// 注册
int logon()
{
    system("clear");
    printf("----------------------欢迎来到注册界面------------------\n");
    printf(" 1、学生注册                                2、老师注册\n");
    printf("请做出你的选择(1~2):");
    int option = 0;
    scanf("%d", &option);
    switch (option)
    {
    case 1:
    {
        system("clear");
        printf("---------------------学生注册-----------------------\n");
        user_data data;
        printf("请输入你的姓名:");
        scanf("%s", data.name);
        printf("请输入你的学号:");
        scanf("%s", data.id);
        printf("请输入你的性别:");
        scanf("%s", data.sex);
        printf("请输入你的班级:");
        scanf("%s", data.class);
        printf("请输入你的年龄:");
        scanf("%d", &data.age);
        printf("请输入你的密码:");
        scanf("%s", data.password);

        //数学分析 数据结构为必修
        char class[2][20] = {"数学分析", "数据结构"};
        for (size_t i = 0; i < initcount; i++)
        {
            if (i < 2)
            {
                strcpy(data.course[i].coursename, class[i]); 
                data.course[i].score = 0;
            }
            else
            {
                strcpy(data.course[i].coursename, "NULL");
                data.course[i].score = 0;
            }
        }
        printf("注册成功,请登录\n");
        insert_list(slist, data);
        list_update_file(slist, STUDENTS_FILE);
        break;
    }
    case 2:
    {
        system("clear");
        printf("---------------------老师注册-----------------------\n");
        user_data data;
        printf("请输入你的姓名:");
        scanf("%s", data.name);
        printf("请输入你的工号:");
        scanf("%s", data.id);
        printf("请输入你的性别:");
        scanf("%s", data.sex);
        printf("请输入你所授课程:");
        scanf("%s", data.class);
        printf("请输入你的年龄:");
        scanf("%d", &data.age);
        printf("请输入你的密码:");
        scanf("%s", data.password);
        printf("注册成功,请登录\n"); 
        insert_list(tlist, data);
        list_update_file(tlist, TEACHER_FILE);
        break;
    }
    default:
        break;
    }
}

// 登录判断
p_list log_in(p_list list)
{
    if (list == NULL)
    {
        printf("list is error\n");
        return NULL;
    }

    // 声明两个字符串
    char user[128];
    char password[128];
    bool flag_user = false;     // 账号名标志
    bool flag_password = false; // 密码标志
    int chance = 3;             // 三次机会
    while (chance)
    {
        // 清空字符串
        memset(user, 0, sizeof(user));
        memset(password, 0, sizeof(password));
        // 用户输入
        printf("请输入你的账号:");
        scanf(" %s", user);
        printf("请输入你的密码:");
        scanf(" %s", password);
        // 循环判定
        p_list phead = list->next;
        while (phead != NULL)
        {
            if (!strcmp(user, phead->data.id))
            {
                flag_user = true; // 账号正确

                if (!strcmp(password, phead->data.password))
                {
                    flag_password = true; // 密码正确
                    break;
                }
            }
            phead = phead->next;
        }
        // 判断账号与密码是否都正确
        if (flag_user == true && flag_password == true)
        {
            return phead;
        }
        else
        {
            chance--;
            printf("登录失败,你还有%d次机会\n", chance);
        }
    }
    return NULL;
}